PHP 代码审计特殊函数有什么
信息泄漏
bool phpinfo([int $what=INFO_ALL])
输出PHP当前状态的大量信息, 包含了PHP编译选项、启用的扩展、PHP版本、服务器信息和环境变量(如果编译为一个模块的话) 、PHP环境变量、操作系统版本信息、path变量、配置选项的本地值和主值、HTTP头和PHP授权信息(License) 。
软连接-读取文件内容
bool symlink(string $target, string $link)
symlink() 对于已有的target建立一个名为link的符号连接。
string readlink (string $path)
readlink() 和同名的C函数做同样的事, 返回符号连接的内容。
环境变量
string getenv(string $varname)
获取一个环境变量的值。
bool putenv(string $setting)
添加setting到服务器环境变量。环境变量仅存活于当前请求期间。在请求结束时环境会恢复到初始状态。
加载扩展
bool dl(string $library)
载入指定参数library的PHP扩展。
配置相关
string ini_get(string $varname)
成功时返回配置选项的值。
string ini_set(string $varname, string $new value)
string ini_alter(string $varname, string $new value)
设置指定配置选项的值。这个选项会在脚本运行时保持新的值,并在脚本结束时恢复。
void ini_restore(string $varname)
恢复指定的配置选项到它的原始值。
数字判断
bool is_numeric(mixed $var)
如果var是数字和数字字符串则返回TRUE, 否则返回FALSE。
仅用is_numeric判断而不用intval转换就有可能插入16进制的字符串到数据库, 进而可能导致sql二次注入。
数组相关
bool in_array(mixed $needle, array $haystack[bool$strict=FALSE])
在haystack中搜索needle, 如果没有设置strict则使用宽松的比较。
该函数有一个特性,比较之前会进行自动类型转换。
$a='1abc';
in_array($a,array(1, 2,3) ) 的返回值会是真